package q2206_divideArray;

public class Solution {
    /*
    题中已经说明nums长度是一个偶数 所以不用判断
     */
    public boolean divideArray(int[] nums) {
//        Map<Integer, Integer> map = new HashMap<>();
//        for (int i = 0; i < nums.length; i++) map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
//        for (Integer value : map.values()) {
//            if (value % 2 != 0) return false;
//        }
//        return true;

        // 此题用自制hash表更快 开销更小
        int count[] = new int[501];
        for (int x: nums) count[x]++;
        // 判断每个数是否能分成两组
        for (int i = 1; i < 501; i++) {
            if (count[i]%2 != 0) return false;
        }
        return true;
    }
}
